<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>正则表达式</title>
</head>

<body>
  <script>
    // 正则表达式
    // test()方法,检测指定的字符串是否匹配,返回true or false
    // exec()方法,在一个指定字符串中执行一个搜索匹配,返回一个数组,没找到返回null
    const str = '学习前端中~~~'
    // 1.定于语法
    const reg = /前端/
    // 2.是否匹配
    console.log(reg.test(str));
    console.log(reg.exec(str));

    console.log('======元字符---边界符=====');
    // ^  以什么开头
    // $  以什么结尾
    const str1 = '哈哈哈哈'
    const reg1 = /^哈/
    console.log(reg1.test(str1));

    const reg2 = /哈$/
    console.log(reg2.test(str1));

    // 以哈开始  以哈结束
    // 就是只能是一个哈(精确匹配)
    const reg3 = /^哈$/
    console.log(reg3.test(str1));


    console.log('======元字符---量词=====');
    // 量词  就是设定某个模式出现的次数
    // {n,m}   出现的次数大于等于n,小于等于m
    console.log(/^哈{3,6}$/.test('哈哈哈'));  //出现4~6次


    console.log('======元字符---字符类=====');
    // [abc]   匹配集合  包含任意一个都为true
    console.log(/^[abc]$/.test('a'));    //true
    console.log(/^[abc]$/.test('abc'));  //false
    console.log(/^[abc]{2}$/.test('ba'));  //true
    console.log(/^[abc]{2}$/.test('abt'));  //false
    console.log(/^[a-z]{2}$/.test('ab'));  //true
    console.log(/^[A-Z]{2}$/.test('ab'));  //false
    console.log(/^[A-Za-z0-9]{2}$/.test('ab'));  //true
    console.log(/^[A-Za-z0-9]{2}$/.test('ab34'));  //false
  </script>
</body>

</html>